// 云函数入口文件
const cloud = require('wx-server-sdk')
const axios = require('axios');

cloud.init()
const db = cloud.database();

async function pushWxpusherNotify(msgContent) {
  let res = await axios.post("http://wxpusher.zjiecode.com/api/send/message", {
    appToken: "AT_hhoGnAknB3qOIu0EJWwkaVVLvYQBffsz",
    summary: `伐木累新订单通知`,
    content: msgContent,
    contentType: 3, //内容类型 1表示文字  2表示html(只发送body标签内部的数据即可，不包括body标签) 3表示markdown 
    topicIds: [
      6820
    ], //发送目标的topicId，是一个数组！！！，也就是群发，使用uids单发的时候， 可以不传。

    // uids:[//发送目标的UID，是一个数组。注意uids和topicIds可以同时填写，也可以只填写一个。
    //   "UID_xxxx"
    // ],
    // url:"http://wxpusher.zjiecode.com" //原文链接，可选参数
  })
  return res
}

// 云函数入口函数
exports.main = async (event, context) => {
  const wxContext = cloud.getWXContext();
  let openid = wxContext.OPENID;
  let {
    orderId
  } = event;

  // 1. 根据订单号查询订单详情
  let orderQuery = await db.collection('orders').where({ orderId: orderId }).get()
  //------------- 错误检测-err01：数据库访问是否正常
  if (orderQuery.errMsg != 'collection.get:ok') {
    return {
      code: 4001,
      data: '',
      message: `未找到订单[订单ID-${orderId}]`
    }
  }
  let target = orderQuery.data[0];

  // 2. 根据订单数据组织消息体
  //2.1 商品明细行
  let detail = [];
  for(let i = 0, len = target.cartListData.length; i < len; i ++){
    detail.push(`| ${i + 1}          | ${target.cartListData[i].name}(${target.cartListData[i].options || '无小料'})            ￥${target.cartListData[i].price} * ${target.cartListData[i].count}件 |`)
  }
  detail = detail.join('\n')
  // 2.2 订单类型
  let orderTypeFields = ''
  if(target.orderTypeId === 2){
    orderTypeFields = `| 到店时间 | ${target.reserveTime} |`
  }else if(target.orderTypeId === 3){
    orderTypeFields = `| 配送地址 | ${target.address.address} ${target.address.addNumber}  ${target.address.name}(${target.address.phone}) |
    | 配送距离 | ${target.address.distance}米 |
    `
  }else{
    orderTypeFields = ''
  }
  // 2.3 消息体
  let template = `
  | 🌈 类型 | ${target.orderTypeName} （取餐号：${target.simpleId}）                                              |
| ----------- | ------------------------------------------------------------ |
| 订单编号    | ${target.orderId}                                     |
| 用户ID      | ${target.userId}                                      |
| 下单时间    | ${target.orderDate + ' ' + target.orderTime}                 |
| 支付方式    | ${target.payType}                                      |
${orderTypeFields}

| 序号       | 明细                                            |
| ---------- | ----------------------------------------------- |
${detail}
${target.orderTypeId === 3 ? `| 配送费 | ￥${target.deliveryCost} |` : ''}
${target.orderTypeId === 3 ? `| 附加配送费 | ￥${target.extraDeliveryCost} |` : ''}
| 合计       | ${target.totalCount} 件商品 共￥${target.totalCost}元                              |
| 订单备注    |  ${target.orderRemark || '无'}                                                       |
    `

  // 3. 消息发送
  try {
    await pushWxpusherNotify(template)
    return {
      code: 2000,
      data: '',
      message: 'success'
    }
  } catch (error) {
    return {
      code: 4002,
      data: '',
      message: '新订单消息推送时发生错误'
    }
    
  }  
}